Skip to content

♻️ system prompt 治理与死代码清理(减法/中文化/when_to_use/死工具 13 件/死条目 10 条) - #276

Merged
CavinHuang merged 9 commits into
mainfrom
worktree-prompt-subtraction
Aug 22, 2026
Merged

♻️ system prompt 治理与死代码清理(减法/中文化/when_to_use/死工具 13 件/死条目 10 条)#276
CavinHuang merged 9 commits into
mainfrom
worktree-prompt-subtraction

Conversation

@CavinHuang

@CavinHuang CavinHuang commented Aug 21, 2026

Copy link
Copy Markdown
Owner

概要

对 sidecar agent system prompt 与工具面做持续治理(七个 commit):

  1. ♻️ 减法:13044 → 9473 字符(-27%),净删 131 行——消除重复、僵尸段落与无守卫的工具引用
  2. 🌐 中文化:全部英文段落与标题译为中文,9473 → 5048 字符(中文信息密度更高;token 收益因分词而异,勿按字符比例外推)
  3. ♻️ 动态注入段去重+中文化:skills 清单/Office 路由/thread_state/五段英文动态注入治理
  4. ♻️ memory 召回前缀治理<lume_memory_context> 中文化+去重+空行消除
  5. 🔥 when_to_use 非标准字段全链删除
  6. 🔥 sdk 死工具删除 13 件:装配链验证零消费
  7. 🔥 工具设置页死条目清理 10 条
  8. 🔥 when_to_use 非标准字段全链删除

Commit 1:减法(♻️ refactor)

删除(零行为影响)

  • 返回空串的段落函数与未引用常量
  • ~/.lume/lume.yaml.context/ 用法、brainstorming 规则的逐字重复行
  • Expression Strategy 中 image_gen 的静态引用——image_gen 为条件创建工具,无工具会话中构成幻觉调用诱因

合并(段落 17 → 14)

  • 系统配置 + 工作区 + Workspace Knowledge → 单一「工作区」段;去掉纯 UI 用途的 workspaceName 注入(动态值织入静态段还会打断 prompt cache)
  • Execution Modes + Capability Routing → 单一决策阶梯
  • Loaded Context Policy → 并入 Memory 段,随记忆工具条件注入

精简(schema 已承担的教学)

  • TodoWrite 段 26 → 4 行(工具 schema 自足)
  • Office 段 47 → 16 行:删 Python 示例;路由清单按 availableTools 逐项裁剪,修复"守卫只查 4 个工具却宣称 9 个"的自相矛盾
  • Coding loop 收敛为三条硬规则(禁管道过滤验证命令/后台不轮询/禁自动 git 操作)
  • bypassPermissions 分支去除三遍重复强调

Commit 2:中文化(🌐 style)

  • 全部英文段落与标题译为中文(含身份句、minimal 工作区段、不确定性 default 分支)
  • planner 子代理 prompt 中文化
  • workspace-context 段(总标题/人设摘要/记忆摘要)中文化
  • 保留英文:工具名、角色名、schema 字段(content/activeForm/in_progress/subagent_type/task_ref)、claim 谓词(preferred_name)、机器元数据行(mode=...)、命令与脚本名——这些是模型接口,翻译会破坏调用
  • 范围外:后台子代理(dream/background-extractor/advisor)prompt 保持英文(JSON 输出导向、用户不可见)

Commit 3:动态注入段去重+中文化(♻️ refactor)

  • Memory Brief 只承载数据(长期/近期),行为规则归静态「## 记忆」段单点声明
  • skills 清单治理:header 5 行英文压 3 行中文;office 类 slug(docx/pdf/pptx/xlsx)在有内置 Office 工具时从清单隐藏——其"凡处理文件即调 skill"教学与 Office 工具策略"优先内置工具"构成指令竞争;agent-* 描述保留(persona 名→slug 映射的唯一渠道)
  • thread_state 删 title/modelRef/modelId 渲染(模型对自身 modelId 无可执行动作,且诱发"用元数据答我是谁");插件 diagnostics 不再注入
  • Office 路由表 8 → 2 行:工具 schema description 已自足含路由教学
  • 提问策略×3 → 不确定性处理单点;人设安全×2 → 安全契约单点;Skill 匹配时机 → 执行模式单点
  • file_reference_protocol 改引用式(指向 <working_directory> tag),不再重复绝对路径
  • OpenConnector / deferred tools / browser 回退 / todo_state 五段英文中文化

Commit 4:memory 召回前缀治理(♻️ refactor)

  • <lume_memory_context> 头部 10 行英文指令压 4 行中文,删除与静态 prompt 段重复的规则行(单点声明);样例 660 字符(旧版仅指令即 ~1500)
  • 六个 render 函数删除尾部空行元素,XML 块间零空行(标签自定界不需空行)
  • 工作区上下文子块间单空行、段尾不带空行——修复"段尾空串元素 + 外层 \n\n join"叠加出的双空行

Commit 5:when_to_use 全链删除(🔥 refactor)

when_to_use 非 Agent Skills 标准字段,且清单渲染从不消费(静默丢弃),删除:

  • sdk:SkillDefinition 字段、fs-loader 解析、engine token 估算
  • shared:SkillMeta / SaveWorkspaceSkillInput 类型
  • sidecar:frontmatter 解析、rpc schema(strict)、编辑器校验与写回;必填从「描述+触发条件+提示词」放宽为「描述+提示词」
  • web:表单「触发条件」输入框、校验、列表展示、搜索字段、提交载荷
  • 32 个内置 SKILL.md 删 frontmatter 行;skill-creator 教学正文同步
  • 存量 SKILL.md 的 when_to_use 行成为 YAML 未知字段被安全忽略,legacy 测试钉死该容忍行为

保留决策(经验证)

  • 14 个内置子代理角色清单保留:Agent 工具的 subagent_type schema 为静态描述、不反射注册表,此清单是模型发现内置子代理的唯一渠道
  • 子代理协作/兼容两段保留:TaskReport/FinishAgentTask coordinator 路径仍在使用
  • Memory claim 三元组示例保留:memory-v2 实际解析 subject/predicate/object 并做冲突检测

有意的行为变化

  1. 无 workspaceSlug 的会话不再显示配置入口行(minimal 模式仍保留)
  2. 无记忆工具的会话不再注入 loaded-context 规则
  3. TodoWrite 的 blocked-creates-new-task 与收尾 reconcile 规则移交工具 schema description 承担
  4. 有内置 Office 工具的会话,skills 清单不再列 docx/pdf/pptx/xlsx(显式调用仍可用)
  5. thread_state 不再含 title/modelRef/modelId;插件 diagnostics 不再注入
  6. Skill 编辑器「触发条件」不再必填(字段已删除);rpc strict schema 拒绝携带 whenToUse 的旧载荷
  7. sdk 不再注册/导出 SendMessage、Team×2、FindFiles、ListWorkspaceTree、ConfigTool 与 sdk 版 MCP resource 7 件(sidecar 使用自建同名实现,不受影响)
  8. 工具设置页不再展示已下线工具(agent 组 5→2、automation 组 2→1)

Commit 6:sdk 死工具删除(🔥 refactor)

装配链验证(createBaseSdkAlignedToolscreateLumeRuntimeTools → MCP/skill 动态注入)确认 13 件工具在三端与 sdk 内部零消费:SendMessage / TeamCreate / TeamDelete(机制未接入)、FindFiles / ListWorkspaceTree(被 Glob / ListDirectory 替代)、ConfigTool、sdk 版 MCP resource 7 件——sidecar 用自建同名实现(tools/mcp/create-mcp-tools.ts),sdk 版及 setMcpConnections 死链(连接表唯一读者即死工具)整体删除。保留 tool-approval 别名键 listmcpresources 等(sidecar 同名工具经 allowed/disallowed 匹配仍可达)。

Commit 7:工具设置页死条目清理(🔥 refactor)

tool-metadata.ts 删除已下线工具的 UI 条目 9 条 + 旧名残留 cron_set(实际工具已名 automation_set 且已有条目);同步 system-tools-state 分组判断与断言。保留 list_mcp_resources / read_mcp_resource(sidecar 自建同名活工具)。

验证

  • bun run typecheck 六包全绿
  • prompt sections / builder / workspace-context / context-assembler / skills / rpc / web 表单测试全绿(95 + 35 + 34 + 9);对齐脚本 25/25
  • 工具删除轮:sdk 全量 584 pass / 0 fail;sidecar MCP 面 33 pass;web skills 相关 18 pass(2 项失败经 main baseline 对比为预存:SkillsMarketView 测试 cwd 假设 + desktop-api getEditableSkill 导出缺失,与改动无关)
  • run.test.ts:本轮引入的唯一真实回归(planner prompt 断言)已修复;其余失败项经 main baseline 对比 + 逐项 -t 单独重跑全过,确认为并发资源竞争 flaky(三次全量运行失败集合互不相同),transcript 一项 main 上同样红(预存)

Follow-up

  • Agent 工具 subagent_type schema 动态反射注册表后,可进一步回收 prompt 中的角色清单
  • CLAUDE_PLAN_MODE_SECTION 常量名与产出内容(执行模式)不符,宜改名
  • 中文化后建议人工冒烟一轮多模型对话,确认指令遵循度无退化
  • desktop/computer-use 策略块中文化(条件注入路径,未触达)

🤖 Generated with Claude Code

TaTaLiao and others added 2 commits August 21, 2026 11:30
- 删除返回空串的僵尸段落函数与未引用常量
- 系统配置/工作区/Workspace Knowledge 三段合并为单一「工作区」段,去掉无用的 workspaceName 注入
- Execution Modes 与 Capability Routing 合并为单一决策阶梯,删除重复的 lightest 开头句与 brainstorming 重复行
- Loaded Context Policy 三行并入 Memory 段,随记忆工具条件注入
- TodoWrite 段 26→4 行:使用规则与 content/activeForm schema 由工具定义自足承担
- Office 段 47→16 行:删除 Python 示例(工具 schema 已含教学),路由清单按 availableTools 裁剪,消除宣称未注册工具的自相矛盾
- 删除 Expression Strategy 中无守卫的 image_gen 静态引用(工具为条件创建,无工具会话构成幻觉诱因)
- Coding loop 收敛为三条硬规则(禁管道过滤验证命令/后台不轮询/禁自动 git 操作)
- bypassPermissions 分支去除三遍重复强调,保留全部约束语义
- Tooling 4→1 行;Core Behavior 15→3 行,保留 persona 边界与提问规则
- 同步 6 个测试文件与 verify-prompt-alignment.ts 基线;新增 Coding loop 硬规则语义测试

Co-Authored-By: Claude <noreply@anthropic.com>
- 全部英文段落与标题译为中文:身份句/核心行为/工具使用/执行模式/安全契约/记忆/运行时/TodoWrite/内容呈现/浏览器优先标题/不确定性 default 分支/minimal 工作区段
- planner 子代理 prompt 中文化(explorer/researcher/code-reviewer 原即中文)
- workspace-context 段:总标题/人设摘要/记忆摘要/引导句中文化
- 保留英文:工具名、角色名、schema 字段(content/activeForm/in_progress/subagent_type/task_ref)、claim 谓词、机器元数据行、命令与脚本名
- 同步 8 个测试文件与 verify-prompt-alignment.ts 断言;对齐脚本口径下 9473→5048 字符
- 范围外:后台子代理(dream/background-extractor/advisor)prompt 保持英文

Co-Authored-By: Claude <noreply@anthropic.com>
@CavinHuang CavinHuang changed the title ♻️ refactor(sidecar): system prompt 减法——净删 131 行,体积 -27% ♻️ system prompt 减法 + 🌐 全面中文化(sidecar agent prompt 治理) Aug 21, 2026
TaTaLiao and others added 7 commits August 22, 2026 10:12
- Memory Brief 只承载数据(长期/近期),行为规则归「## 记忆」段单点声明
- skills 清单治理:header 5 行英文压 3 行中文;office 类 slug 在有内置
  Office 工具时从清单隐藏(消除指令竞争);agent-* 描述保留 persona 映射
- thread_state 删 title/modelRef/modelId 渲染;插件 diagnostics 不再注入
- Office 工具路由表 8 行压 2 行(工具 schema 自足含教学)
- 提问策略/人设安全/Skill 匹配时机收敛为单点声明
- file_reference_protocol 改引用式不重复绝对路径
- OpenConnector/deferred tools/browser/todo_state 五段英文中文化
- skill 清单接口随附删除未使用的 whenToUse 字段(全链删除见后继提交)

Co-Authored-By: Claude <noreply@anthropic.com>
- <lume_memory_context> 头部 10 行英文指令压 4 行中文,删除与静态
  prompt「## 记忆」「## 运行时」段重复的规则行(单点声明)
- 六个 render 函数删除尾部空行元素,XML 块间零空行(标签自定界)
- 工作区上下文子块间单空行,段尾不带空行(避免与外层 \n\n 叠加双空行)

Co-Authored-By: Claude <noreply@anthropic.com>
when_to_use 非 Agent Skills 标准字段,且清单渲染从不消费(静默丢弃),
全链删除:

- sdk:SkillDefinition 字段、fs-loader 解析、engine token 估算
- shared:SkillMeta / SaveWorkspaceSkillInput 类型
- sidecar:frontmatter 解析、rpc schema(strict)、编辑器校验与写回;
  必填从「描述+触发条件+提示词」放宽为「描述+提示词」
- web:表单「触发条件」输入框、校验、列表展示、搜索字段、提交载荷
- 32 个内置 SKILL.md 删 frontmatter 行;skill-creator 教学正文同步
- 存量 SKILL.md 的 when_to_use 行成为 YAML 未知字段被安全忽略,
  legacy 测试钉死该容忍行为

Co-Authored-By: Claude <noreply@anthropic.com>
装配链验证(createBaseSdkAlignedTools → createLumeRuntimeTools → MCP/skill
动态注入)确认以下工具在三端与 sdk 内部均无消费者,仅剩定义+导出+注册自引用:

- SendMessage / TeamCreate / TeamDelete(多代理消息与 team 机制未接入)
- FindFiles(被 Glob 替代)/ ListWorkspaceTree(被 ListDirectory 替代)
- ConfigTool(配置走 Lume 自身体系)
- sdk 版 MCP resource 7 件(List/Read/Subscribe×2/Polling×2/McpAuth)——
  sidecar 使用自建同名实现,sdk 版死链;setMcpConnections 的连接表唯一
  读者即死工具,连同 agent.ts 调用一起删除

保留项:tool-approval 别名键 listmcpresources/readmcpresource(sidecar
自建同名工具经 allowed/disallowed 匹配仍可达);Task* 6 件(host-bound,
sidecar createTaskTools 绑定)。

Co-Authored-By: Claude <noreply@anthropic.com>
- 删除已下线工具的 UI 元数据 9 条:send_message/team_create/team_delete/
  config/subscribe_mcp_resource/unsubscribe_mcp_resource/subscribe_polling/
  unsubscribe_polling/mcp_auth
- 删除旧名残留 cron_set(实际工具已名 automation_set 且已有条目)
- 同步 system-tools-state 分组判断:agent 组 5→2、automation 组 2→1,
  断言钉死新计数
- 保留 list_mcp_resources/read_mcp_resource 两条(对应 sidecar 自建
  同名活工具)

Co-Authored-By: Claude <noreply@anthropic.com>
冲突解决:context-assembler browserFallbackPolicy 取 main 三态结构
(mcp__browser__* 新工具集 / legacy runtime / computer-use 回退),
legacy 态文案保留本分支的中文翻译。

Co-Authored-By: Claude <noreply@anthropic.com>
@CavinHuang CavinHuang changed the title ♻️ system prompt 减法 + 🌐 全面中文化(sidecar agent prompt 治理) ♻️ system prompt 治理与死代码清理(减法/中文化/when_to_use/死工具 13 件/死条目 10 条) Aug 22, 2026
@CavinHuang
CavinHuang merged commit b01fff1 into main Aug 22, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants